<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title></title>

    <style>
        
    </style>
</head>

<script>
    
    /* 
        场景: 当我们执行一个任务, 如果它失败后我希望后面所有的回调(无论成功失败)都不再执行, 这时就需要中断Promise
    */

    /* 
        中断Promise链原理:
            后面then()中回调函数的执行是根据前面then()中回调(成功/失败)函数的执行结果决定的  => 具体参见关键问题4
            所以只要前面的then()返回一个状态为pending的Promise, 那么后面then()的回调无论如何都不会执行到
    */
    Promise.resolve(1)
    .then(
        value => {
            console.log(`接收到结果1-成功 ${value}`)
            return Promise.reject(2)
        }
    )
    .catch(     // 失败后我希望后面所有的回调(无论成功失败)都不再执行
        reason => {
            console.log(`接收到结果2-失败 ${reason}`)
            // **重点: 中断Promise链
            return new Promise(()=>{})
        }
    )
    .then(  // 这个then()中的回调将不会被执行
        value => console.log(`接收到结果3 ${value}`),
        reason => console.log(reason)
    )


    /* 
        接收到结果1-成功 1
        接收到结果2-失败 2
    */

</script>

<body>
    
</body>

</html>